#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;

//class Bonus {
//public:
//    int getMost(vector<vector<int> > board) {
//        // write code here
//        vector<vector<int>> vv(6, vector<int>(6, 0));
//        vv[0][0] = board[0][0];
//
//        for (int i = 1; i != 6; ++i)
//        {
//            vv[0][i] = vv[0][i - 1] + board[0][i];
//            vv[i][0] = vv[i - 1][0] + board[i][0];
//        }
//
//        for (int i = 1; i < 6; ++i)
//        {
//            for (int j = 1; j < 6; ++j)
//            {
//                vv[i][j] = max(vv[i - 1][j], vv[i][j - 1]) + board[i][j];
//            }
//        }
//
//        return vv[5][5];
//    }
//};

void MazePath(vector<vector<int>> maze, int N, int M,vector<string>& result,int row,int col)
{
	if (row == N || col == M)
	{
		return;
	}
		

	if (maze[row][col] == 1)
	{
		return;
	}
		

	string tmp;
	tmp += '(';
	tmp += to_string(row);
	tmp += ',';
	tmp += to_string(col);
	tmp += ')';
	result.push_back(tmp);
	MazePath(maze, N, M, result, row, col + 1);
	MazePath(maze, N, M, result, row + 1, col);
}
int main()
{
	int N = 0, M = 0;
	cin >> N >> M;
	vector<vector<int>> maze(N, vector<int>(M, 0));
	vector<string> result;
	for (int i = 0; i < N; ++i)
	{
		for (int j = 0; j < M; ++j)
		{
			cin >> maze[i][j];
		}
	}
	int row = 0, col = 0;
	MazePath(maze, N, M,result,row,col);
	for (int i = 0; i < result.size(); ++i)
	{
		cout << result[i] << endl;
	}
	return 0;
}

//int main()
//{
//	int row = 0, col = 0;
//	string tmp;
//	tmp += '(';
//	tmp += to_string(row);
//	tmp += ',';
//	tmp += to_string(col);
//	tmp += ')';
//	cout << tmp << endl;
//	return 0;
//}